package cn.song.config;

import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;

import javax.servlet.MultipartConfigElement;

/**
 * 配置类用于设置文件上传相关参数
 *
 * @author SongRenShuo
 * @date 2025/01/20
 */
@Configuration
public class FileConfig {

    /**
     * 创建并配置MultipartConfigElement实例
     * 用于定制文件上传请求的大小限制等
     *
     * @return 配置好的MultipartConfigElement实例
     */
    @Bean
    public MultipartConfigElement multipartConfigElement() {
        // 创建MultipartConfigFactory实例，用于生成MultipartConfigElement
        MultipartConfigFactory factory = new MultipartConfigFactory();
        // 设置单个文件的最大大小为20MB，默认为2MB
        factory.setMaxFileSize(DataSize.ofMegabytes(20));
        // 设置整个请求的最大大小为20MB，默认为10MB
        factory.setMaxRequestSize(DataSize.ofMegabytes(20));
        // 根据工厂设置生成并返回MultipartConfigElement实例
        return factory.createMultipartConfig();
    }
}
